// Funcion que elimina el campo para Dato Requerido especificado en el parametro.
function removeDR(num)
{
    // Decrementa la variable y obtiene el largo anterior.
    var variable=document.getElementById("DRLen");
    var len=(variable.value-0);
    variable.value=len-1
    // Remueve el campo especificado.
    var datosRequeridos=document.getElementById("datosRequeridos");
    var datoARemover=document.getElementById("datoRequerido" + num);
    datosRequeridos.removeChild(datoARemover);
    // Corre los campos que iban despues. El truco es ponerle un ID a los elementos que tienen
    // valores que se deben cambiar para obtenerlos facilmente por medio de getElementById() y
    // cambiar el valor de sus atributos por medio de element.setAttribute().
    for(var i=num+1; i<len; i++)
    {
        var div=document.getElementById("datoRequerido"+i);
        var select=document.getElementById("nombreDR"+i);
        var button=document.getElementById("removeDR"+i);
        button.setAttribute("onclick","removeDR(" + (i-1) + ")");
        button.setAttribute("id","removeDR"+ (i-1));
        select.setAttribute("name","nombreDR"+ (i-1));
        select.setAttribute("id","nombreDR" + (i-1));
        div.setAttribute("id","datoRequerido"+ (i-1));
    }
}

function addCategoria(disciplina){
    // Obtiene la variable y la incrementa en 1.
    var variable=document.getElementById("CatLen" + disciplina);
    var len=(variable.value-0);
    variable.value=len+1;
    // Obtiene el campo de categorías en donde se colocarán.
    var categorias=document.getElementById("categorias"+disciplina);
    
    // Obtiene el botón para ponerlo al final.
    var botonAdd=document.getElementById("buttonAddCategoria"+disciplina);
    categorias.removeChild(botonAdd);
    
    // Crea el div y modifica su innerHTML
    var divCategoria=document.createElement("div");
    divCategoria.setAttribute("id","categoria"+disciplina+"-"+len);
    divCategoria.innerHTML="<fieldset>\n" +"    <legend>\n" +"    Nombre de Categor&iacute;a:\n" +"        <input type=\"text\" id=\"nombreCategoria" + disciplina + "-" + len + "\" name=\"nombreCategoria" + disciplina + "-" + len + "\" />\n" +"        <button type=\"button\" id=\"removeCategoria"+disciplina+"-"+len+"\"onClick=\"removeCategoria(" + disciplina + "," + len + ");\">-</button>\n" +"    </legend>\n" +"    <table border=\"0\" cellpadding=\"0\" cellspacing=\"10\">\n" +"        <tr>\n" +"            <td>\n" +"                <fieldset>\n" +"                    <legend><b>Sexo</b></legend>\n" +"                    <input type=\"radio\" id=\"sexMasculino" + disciplina + "-" + len + "\" name=\"sex" + disciplina + "-" + len + "\" value=\"masculino\" disabled checked /> Masculino<br />\n" +"                    <input type=\"radio\" id=\"sexFemenino" + disciplina + "-" + len + "\" name=\"sex" + disciplina + "-" + len + "\" value=\"femenino\" disabled /> Femenino<br />\n" +"                    <input type=\"radio\" id=\"sexMixto" + disciplina + "-" + len + "\" name=\"sex" + disciplina + "-" + len + "\" value=\"mixto\" disabled /> Mixto<br />\n" +"                </fieldset>\n" +"            </td>\n" +"            <td>\n" +"                <fieldset>\n" +"                    <legend><b>Edad</b></legend>\n" +"                    \n" +"                    <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n" +"                        <tr>\n" +"                            <td rowspan=\"2\">Min:</td>\n" +"                            <td rowspan=\"2\">\n" +"                                <input type=\"text\" id=\"edadMinima" + disciplina + "-" + len + "\" name=\"edadMinima" + disciplina + "-" + len + "\" value=\"0\" style=\"width:50px;height:23px;\" disabled />\n" +"                            </td>\n" +"                            <td>\n" +"                                <input type=\"button\" id=\"edadMinArriba" + disciplina + "-" + len + "\" value=\"+\" onclick=\"document.getElementById('edadMinima" + disciplina + "-" + len + "').value++;\" style=\"font-size:7px;margin:0;padding:0;width:20px;height:13px;\" disabled >\n" +"                            </td>\n" +"                        </tr>\n" +"                        <tr>\n" +"                            <td>\n" +"                                <input type=\"button\" id=\"edadMinAbajo" + disciplina + "-" + len + "\" value=\"-\" onclick=\"if(document.getElementById('edadMinima" + disciplina + "-" + len + "').value>0)document.getElementById('edadMinima" + disciplina + "-" + len + "').value--;\" style=\"font-size:7px;margin:0;padding:0;width:20px;height:12px;\" disabled>\n" +"                            </td>\n" +"                        </tr>\n" +"                        <tr>\n" +"                            <td rowspan=\"2\">Max:&#160;</td>\n" +"                            <td rowspan=\"2\">\n" +"                                <input type=\"text\" id=\"edadMaxima" + disciplina + "-" + len + "\" name=\"edadMaxima" + disciplina + "-" + len + "\" value=\"0\" style=\"width:50px;height:23px;\" disabled />\n" +"                            </td>\n" +"                            <td>\n" +"                                <input type=\"button\" id=\"edadMaxArriba" + disciplina + "-" + len + "\" value=\"+\" onclick=\"document.getElementById('edadMaxima" + disciplina + "-" + len + "').value++;\" style=\"font-size:7px;margin:0;padding:0;width:20px;height:13px;\" disabled >\n" +"                            </td>\n" +"                        </tr>\n" +"                        <tr>\n" +"                        <td><input type=\"button\" id=\"edadMaxAbajo" + disciplina + "-" + len + "\" value=\"-\"  onclick=\"if(document.getElementById('edadMaxima" + disciplina + "-" + len + "').value>0)document.getElementById('edadMaxima" + disciplina + "-" + len + "').value--;\" style=\"font-size:7px;margin:0;padding:0;width:20px;height:12px;\" disabled ></td>\n" +"                        </tr>\n" +"                    </table>\n" +"                    Nombre:\n" +"                        <input type=\"text\" id=\"nombreEdad" + disciplina + "-" + len + "\" name=\"nombreEdad" + disciplina + "-" + len + "\" disabled>\n" +"                        \n" +"                </fieldset>\n" +"            </td>\n" +"            <td>\n" +"                <fieldset>\n" +"                    <legend><b>Peso</b></legend>\n" +"                    \n" +"                    <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n" +"                        <tr>\n" +"                            <td rowspan=\"2\">Min:</td>\n" +"                            <td rowspan=\"2\">\n" +"                                <input type=\"text\" id=\"pesoMinimo" + disciplina + "-" + len + "\" name=\"pesoMinimo" + disciplina + "-" + len + "\" value=\"0\" style=\"width:50px;height:23px;\" disabled />\n" +"                            </td>\n" +"                            <td>\n" +"                                <input type=\"button\" id=\"pesoMinArriba" + disciplina + "-" + len + "\" value=\"+\" onclick=\"document.getElementById('pesoMinimo" + disciplina + "-" + len + "').value++;\" style=\"font-size:7px;margin:0;padding:0;width:20px;height:13px;\" disabled >\n" +"                            </td>\n" +"                        </tr>\n" +"                        <tr>\n" +"                            <td>\n" +"                                <input type=\"button\" id=\"pesoMinAbajo" + disciplina + "-" + len + "\" value=\"-\" onclick=\"if(document.getElementById('pesoMinimo" + disciplina + "-" + len + "').value>0)document.getElementById('pesoMinimo" + disciplina + "-" + len + "').value--;\" style=\"font-size:7px;margin:0;padding:0;width:20px;height:12px;\" disabled>\n" +"                            </td>\n" +"                        </tr>\n" +"                        <tr>\n" +"                            <td rowspan=\"2\">Max:&#160;</td>\n" +"                            <td rowspan=\"2\">\n" +"                                <input type=\"text\" id=\"pesoMaximo" + disciplina + "-" + len + "\" name=\"pesoMaximo" + disciplina + "-" + len + "\" value=\"0\" style=\"width:50px;height:23px;\" disabled />\n" +"                            </td>\n" +"                            <td>\n" +"                                <input type=\"button\" id=\"pesoMaxArriba" + disciplina + "-" + len + "\" value=\"+\" onclick=\"document.getElementById('pesoMaximo" + disciplina + "-" + len + "').value++;\" style=\"font-size:7px;margin:0;padding:0;width:20px;height:13px;\" disabled >\n" +"                            </td>\n" +"                        </tr>\n" +"                        <tr>\n" +"                        <td><input type=\"button\" id=\"pesoMaxAbajo" + disciplina + "-" + len + "\" value=\"-\"  onclick=\"if(document.getElementById('pesoMaximo" + disciplina + "-" + len + "').value>0)document.getElementById('pesoMaximo" + disciplina + "-" + len + "').value--;\" style=\"font-size:7px;margin:0;padding:0;width:20px;height:12px;\" disabled ></td>\n" +"                        </tr>\n" +"                    </table>\n" +"                    Dimensional Utilizada: <select id=\"dimensional" + disciplina + "-" + len + "\" name=\"dimensional" + disciplina + "-" + len + "\" disabled >\n" +"                        <option>Kg</option>\n" +"                        <option>lb</option>\n" +"                    </select><br>Nombre:<input type=\"text\" id=\"NombrePeso" + disciplina + "-" + len + "\" name=\"NombrePeso" + disciplina + "-" + len + "\" disabled />\n" +"                </fieldset>\n" +"            </td>\n" +"        </tr>\n" +"    </table>\n" +"</fieldset>\n"
    
    // Añade los elementos
    var br = document.createElement("br");
    br.setAttribute("id","br-cat"+disciplina+"-"+len);
    
    categorias.appendChild(br);
    categorias.appendChild(divCategoria);
    categorias.appendChild(botonAdd);

    // Habilita los elementos de acuerdo a la disciplina
    
    habilitarEdad(disciplina);
    habilitarPeso(disciplina);
    habilitarSexo(disciplina);

    // Bloquea o desbloquea el botón de eliminar categoría
    if(len==1)
        document.getElementById("removeCategoria"+disciplina+"-0").disabled=false;
    else if(len==0)
        document.getElementById("removeCategoria"+disciplina+"-0").disabled=true;
}

function removeCategoria(disciplina, categoria){
    // Decrementa la variable y obtiene el largo anterior.
    var variable=document.getElementById("CatLen"+disciplina);
    var len=(variable.value-0);
    variable.value=len-1
    
    // Remueve el campo especificado.
    var datoARemover=document.getElementById("categoria"+disciplina+"-"+categoria);
    var datosRequeridos=document.getElementById("categorias"+disciplina);
    if(categoria > 0){
        datosRequeridos.removeChild(document.getElementById("br-cat" + disciplina + "-" + categoria));
    }
    datosRequeridos.removeChild(datoARemover);
    
    // Corre los campos que iban después.
    for(var i=categoria+1; i<len; i++)
    {
        var div=document.getElementById("categoria"+disciplina+"-"+i);
        var newHTML=replaceAll(div.innerHTML.toString(),disciplina+"-"+i, disciplina+"-"+(i-1));
        newHTML=replaceAll(newHTML,disciplina+","+i, disciplina+","+(i-1));
        div.innerHTML=newHTML
        div.setAttribute("id","categoria"+disciplina+"-"+(i-1));
        var brCat=document.getElementById("br-cat"+disciplina+"-"+i);
        brCat.setAttribute("id","br-cat"+disciplina+"-"+(i-1));
    }
    var brCat=document.getElementById("br-cat"+disciplina+"-0");
    datosRequeridos.removeChild(brCat);
    // Deshabilita el botón de quitar la categoría 0 de la disciplina si
    // ésta fuera la única categoría en la disciplina.
    if(len==2)
        document.getElementById("removeCategoria"+disciplina+"-0").disabled=true;
}

// Corre las categorías que se encuentran en la disciplina especificada
// diminuyendo el índice de su disciplina en 1.
function correrCategorias(disciplina){
    var datosRequeridos=document.getElementById("categorias"+disciplina);
    var variable=document.getElementById("CatLen"+disciplina);
    var len=(variable.value-0);
    
    for(var i=0; i<len; i++)
    {
        var div=document.getElementById("categoria"+disciplina+"-"+i);
        var newHTML=replaceAll(div.innerHTML.toString(),disciplina+"-"+i, (disciplina-1)+"-"+i);
        newHTML=replaceAll(newHTML,disciplina+","+i, (disciplina-1)+","+i);
        div.innerHTML=newHTML
        div.setAttribute("id","categoria"+(disciplina-1)+"-"+i);
        var brCat=document.getElementById("br-cat"+disciplina+"-"+i);
        brCat.setAttribute("id","br-cat"+(disciplina-1)+"-"+i);
    }
    
    datosRequeridos.setAttribute("id","categorias"+(disciplina-1));
    variable.setAttribute("id","CatLen"+(disciplina-1));
    variable.setAttribute("name","CatLen"+(disciplina-1));
}

function replaceAll( text, busca, reemplaza ){
  while (text.toString().indexOf(busca) != -1)
      text = text.toString().replace(busca,reemplaza);
  return text;
}
//funcion que agrega dinamicamente disciplina
function addDisciplina(){
// Obtiene la variable y la incrementa en 1.
var variable=document.getElementById("DisLen");
var len=(variable.value-0);
variable.value=len+1;
// Obtiene el campo de datos requeridos
var disciplinas=document.getElementById("disciplinas");
// Crea el nuevo campo
var newDisciplina=document.createElement("div");
newDisciplina.setAttribute("id","disciplina"+len);
//crea el nuevo fieldset
var field=document.createElement("fieldset");
field.innerHTML="<legend> Nombre de Disciplina: <input type=\"text\" id =\"nombreDisciplina"+len+"\" name=\"nombreDisciplina"+len+"\" /> <button id=\"removeDisciplina" + len + "\"type=\"button\" onClick=\"removeDisciplina(" + len + ");\">-</button> </legend> </br> Tipo de Resultado: "; 

//tipo de resultados
var tResultado= document.createElement("select");
tResultado.setAttribute("id","tipoResultado"+len);
tResultado.setAttribute("name","tipoResultado"+len);
tResultado.innerHTML="<option>Puntos</option> <option>Tiempo</option>";
field.appendChild(tResultado);

//espacios antes de los checkboxes
var espacio=document.createElement("br");
field.appendChild(espacio);
var espacio2=document.createElement("br");
field.appendChild(espacio2);

//checkbox de sexo
var sexoCheckbox=document.createElement("input");
sexoCheckbox.setAttribute("type","checkbox");
sexoCheckbox.setAttribute("id","sexoDisciplina"+len);
sexoCheckbox.setAttribute("name","sexoDisciplina"+len);
sexoCheckbox.setAttribute("value","sexo");
sexoCheckbox.setAttribute("onclick","habilitarSexo("+len+")");
field.appendChild(sexoCheckbox);
var sCboxText=document.createElement("label");
sCboxText.setAttribute("id","labelsDisciplina"+len);
sCboxText.setAttribute("for","sexoDisciplina"+len);
sCboxText.innerHTML="Sexo";
field.appendChild(sCboxText);

//checkbox de edad
var edadCheckbox=document.createElement("input");
edadCheckbox.setAttribute("type","checkbox");
edadCheckbox.setAttribute("id","edadDisciplina"+len);
edadCheckbox.setAttribute("name","edadDisciplina"+len);
edadCheckbox.setAttribute("value","edad");
edadCheckbox.setAttribute("onclick","habilitarEdad("+len+")");
field.appendChild(edadCheckbox);
var eCboxText=document.createElement("label");
eCboxText.setAttribute("id","labeleDisciplina"+len);
eCboxText.setAttribute("for","edadDisciplina"+len);
eCboxText.innerHTML="Edad";
field.appendChild(eCboxText);

//checkbox de peso
var pesoCheckbox=document.createElement("input");
pesoCheckbox.setAttribute("type","checkbox");
pesoCheckbox.setAttribute("id","pesoDisciplina"+len);
pesoCheckbox.setAttribute("name","pesoDisciplina"+len);
pesoCheckbox.setAttribute("value","peso");
pesoCheckbox.setAttribute("onclick","habilitarPeso("+len+")");
field.appendChild(pesoCheckbox);
var pCboxText=document.createElement("label");
pCboxText.setAttribute("id","labelpDisciplina"+len);
pCboxText.setAttribute("for","pesoDisciplina"+len);
pCboxText.innerHTML="Peso";
field.appendChild(pCboxText);


//div categorias
var dCategorias= document.createElement("div");
dCategorias.setAttribute("id", "categorias"+len);
//titulo para categorias
var tCategorias=document.createElement("h3"); 
tCategorias.innerHTML="Categor&iacute;as";
dCategorias.appendChild(tCategorias);//agrega titulo a div de categorias
//input hidden
var hCategorias=document.createElement("input");
hCategorias.setAttribute("type","hidden");
hCategorias.setAttribute("value","0");
hCategorias.setAttribute("id","CatLen"+len);
hCategorias.setAttribute("name","CatLen"+len);
dCategorias.appendChild(hCategorias);//agrega hidden a div de categorias

//boton de agregar categoria
var bAgregarCategoria=document.createElement("button");
bAgregarCategoria.setAttribute("id","buttonAddCategoria"+len);
bAgregarCategoria.setAttribute("type","button");
bAgregarCategoria.setAttribute("onClick","addCategoria("+len+");");
bAgregarCategoria.innerHTML="+";
dCategorias.appendChild(bAgregarCategoria);

//agrega categorias al fieldset de la disciplina
field.appendChild(dCategorias);

//agrega fieldset a la disciplina
newDisciplina.appendChild(field);
//agrega espacio entre disciplinas
var espacio3=document.createElement("br");
newDisciplina.appendChild(espacio3);

//agrega nueva disciplina
disciplinas.appendChild(newDisciplina);


//agrega categoria inicial
addCategoria(len);

// Quita el boton de agregar de donde estaba para ponerlo al final
var boton=document.getElementById("buttonAddDisciplina");
disciplinas.removeChild(boton);
disciplinas.appendChild(boton);

}


// Funcion que elimina el campo para disciplinas especificado en el parametro.
function removeDisciplina(num)
{
// Decrementa la variable y obtiene el largo anterior.
var variable=document.getElementById("DisLen");
var len=(variable.value-0);
variable.value=len-1
// Remueve el campo especificado.
var disciplinas=document.getElementById("disciplinas");
var disciplinaARemover=document.getElementById("disciplina" + num);
disciplinas.removeChild(disciplinaARemover);
// Corre los campos que iban despues. El truco es ponerle un ID a los elementos que tienen
// valores que se deben cambiar para obtenerlos facilmente por medio de getElementById() y
// cambiar el valor de sus atributos por medio de element.setAttribute().
for(var i=num+1; i<len; i++)
{
correrCategorias(i);
var div=document.getElementById("disciplina"+i);
var text=document.getElementById("nombreDisciplina"+i);
var button=document.getElementById("removeDisciplina"+i);
var select=document.getElementById("tipoResultado"+i);
var chBox1=document.getElementById("sexoDisciplina"+i);
var label1=document.getElementById("labelsDisciplina"+i);
var chBox2=document.getElementById("edadDisciplina"+i);
var label2=document.getElementById("labeleDisciplina"+i);
var chBox3=document.getElementById("pesoDisciplina"+i);
var label3=document.getElementById("labelpDisciplina"+i);
var buttonCat=document.getElementById("buttonAddCategoria"+i);
button.setAttribute("onclick","removeDisciplina(" + (i-1) + ");");
button.setAttribute("id","removeDisciplina"+ (i-1));
text.setAttribute("name","nombreDisciplina"+ (i-1));
text.setAttribute("id","nombreDisciplina" + (i-1));
select.setAttribute("id","tipoResultado"+(i-1));
select.setAttribute("name","tipoResultado"+(i-1));
chBox1.setAttribute("id","sexoDisciplina"+(i-1));
chBox1.setAttribute("name","sexoDisciplina"+(i-1));
chBox1.setAttribute("onclick","habilitarSexo("+(i-1)+");");
label1.setAttribute("id","labelsDisciplina"+(i-1));
label1.setAttribute("for","sexoDisciplina"+(i-1));

chBox2.setAttribute("id","edadDisciplina"+(i-1));
chBox2.setAttribute("name","edadDisciplina"+(i-1));
chBox2.setAttribute("onclick","habilitarEdad("+(i-1)+");");
label2.setAttribute("id","labeleDisciplina"+(i-1));
label2.setAttribute("for","edadDisciplina"+(i-1));

chBox3.setAttribute("id","pesoDisciplina"+(i-1));
chBox3.setAttribute("name","pesoDisciplina"+(i-1));
chBox3.setAttribute("onclick","habilitarPeso("+(i-1)+");");
label3.setAttribute("id","labelpDisciplina"+(i-1));
label3.setAttribute("for","pesoDisciplina"+(i-1));

buttonCat.setAttribute("id","buttonAddCategoria"+(i-1));
buttonCat.setAttribute("onclick","addCategoria("+(i-1)+");");

div.setAttribute("id","disciplina"+ (i-1));
}
}



// Habilita y deshabilita las opciones de peso en las categorias de la disciplina indicada.
function habilitarPeso(disciplina)
{
    var catLen=document.getElementById("CatLen"+disciplina).value - 0;
    var pesoChecked=document.getElementById("pesoDisciplina"+disciplina);
    for(var i=0; i<catLen;i++){
        // Obtiene las variables a habilitar/deshabilitar
        var dimensional=document.getElementById("dimensional"+disciplina+"-"+i);
        var minimo=document.getElementById("pesoMinimo"+disciplina+"-"+i);
        var maximo=document.getElementById("pesoMaximo"+disciplina+"-"+i);
        var button1=document.getElementById("pesoMaxArriba"+disciplina+"-"+i);    
        var button2=document.getElementById("pesoMaxAbajo"+disciplina+"-"+i);
        var button3=document.getElementById("pesoMinAbajo"+disciplina+"-"+i);
        var button4=document.getElementById("pesoMinArriba"+disciplina+"-"+i);
        var nombre=document.getElementById("NombrePeso"+disciplina+"-"+i);
        
        dimensional.disabled=!pesoChecked.checked;
        minimo.disabled=!pesoChecked.checked;
        maximo.disabled=!pesoChecked.checked;
        button1.disabled=!pesoChecked.checked;
        button2.disabled=!pesoChecked.checked;
        button3.disabled=!pesoChecked.checked;
        button4.disabled=!pesoChecked.checked;
        nombre.disabled =!pesoChecked.checked;
    }
}
//habilita y deshabilita las opciones de sexo en categorias de la disciplina indicada.
function habilitarSexo(disciplina){
    var catLen=document.getElementById("CatLen"+disciplina).value - 0;
    var sexoChecked=document.getElementById("sexoDisciplina"+disciplina);
    for(var i=0; i<catLen;i++){
        // Obtiene las variables a habilitar/deshabilitar
        
        var masculino=document.getElementById("sexMasculino"+disciplina+"-"+i);
        var femenino=document.getElementById("sexFemenino"+disciplina+"-"+i);
        var mixto=document.getElementById("sexMixto"+disciplina+"-"+i);

        masculino.disabled=!sexoChecked.checked;
        //~ masculino.checked=true;
        femenino.disabled=!sexoChecked.checked;
        mixto.disabled=!sexoChecked.checked;
    }
}
//Habilita y deshabilita las opciones de edad en categorias de la disciplina indicada.
function habilitarEdad(disciplina)
{
    var catLen=document.getElementById("CatLen"+disciplina).value - 0;
    var edadChecked=document.getElementById("edadDisciplina"+disciplina);
    for(var i=0; i<catLen;i++){
        // Obtiene las variables a habilitar/deshabilitar
        var nombre=document.getElementById("nombreEdad"+disciplina+"-"+i);
        var minimo=document.getElementById("edadMinima"+disciplina+"-"+i);
        var maximo=document.getElementById("edadMaxima"+disciplina+"-"+i);
        var button1=document.getElementById("edadMaxArriba"+disciplina+"-"+i);    
        var button2=document.getElementById("edadMaxAbajo"+disciplina+"-"+i);
        var button3=document.getElementById("edadMinAbajo"+disciplina+"-"+i);
        var button4=document.getElementById("edadMinArriba"+disciplina+"-"+i);
        
        nombre.disabled=!edadChecked.checked;
        minimo.disabled=!edadChecked.checked;
        maximo.disabled=!edadChecked.checked;
        button1.disabled=!edadChecked.checked;
        button2.disabled=!edadChecked.checked;
        button3.disabled=!edadChecked.checked;
        button4.disabled=!edadChecked.checked;
    }
}
